//package com.pro.common.service.file.util;
//
//import java.time.LocalDateTime;
//import java.time.format.DateTimeFormatter;
//import java.util.Map;
//
//public class UserFilePathTemplateUtil {
//
//    public static final String LOGICAL_PATH_PREFIX = "user-uploads/";
//
//    private static final DateTimeFormatter YYYY = DateTimeFormatter.ofPattern("yyyy");
//    private static final DateTimeFormatter MM = DateTimeFormatter.ofPattern("MM");
//    private static final DateTimeFormatter DD = DateTimeFormatter.ofPattern("dd");
//    private static final DateTimeFormatter HH = DateTimeFormatter.ofPattern("HH");
//    private static final DateTimeFormatter MIN = DateTimeFormatter.ofPattern("mm");
//    private static final DateTimeFormatter SS = DateTimeFormatter.ofPattern("ss");
//
//    private UserFilePathTemplateUtil() {
//        // 私有构造，防止实例化
//    }
//
//    /**
//     * 解析模板生成最终路径（物理路径）
//     */
//    public static String buildPhysicalPath(String template, Map<String, Object> params) {
//        return resolve(template, params);
//    }
//
//    /**
//     * 解析模板生成逻辑路径（可供前端展示）
//     */
//    public static String buildLogicalPath(String template, Map<String, Object> params) {
//        return normalizePath(LOGICAL_PATH_PREFIX + resolve(template, params));
//    }
//
//    /**
//     * 通用模板解析逻辑
//     */
//    public static String resolve(String template, Map<String, Object> params) {
//        if (template == null) return null;
//
//        LocalDateTime now = LocalDateTime.now();
//
//        // 时间占位符
//        template = template
//                .replace("{yyyy}", YYYY.format(now))
//                .replace("{MM}", MM.format(now))
//                .replace("{dd}", DD.format(now))
//                .replace("{HH}", HH.format(now))
//                .replace("{mm}", MIN.format(now))
//                .replace("{ss}", SS.format(now));
//
//        // 自定义占位符
//        if (params != null) {
//            for (Map.Entry<String, Object> entry : params.entrySet()) {
//                String key = entry.getKey();
//                Object val = entry.getValue();
//                template = template.replace("{" + key + "}", val != null ? val.toString() : "");
//            }
//        }
//
//        // 移除未替换的占位符（可选）
//        template = template.replaceAll("\\{[^}]+}", "");
//
//        return normalizePath(template);
//    }
//
//    /**
//     * 路径规范化
//     */
//    private static String normalizePath(String path) {
//        if (!path.startsWith("/")) path = "/" + path;
//        if (!path.endsWith("/")) path = path + "/";
//        return path;
//    }
//}
